<template>
	<el-dialog v-model="dialogFormVisible" title='删除操作' width="32%" center>
		<span v-if="adminId">是否去掉此用户的管理员职位？删除后此用户将重新展现在用户列表中</span>
		<span v-else>请慎重操作，删除后此用户将永久失去登录资格</span>
		<template #footer>
			<span class="dialog-footer">
				<el-button type="primary" @click="deleteAdmin">确定</el-button>
			</span>
		</template>
	</el-dialog>
</template>
 
<script setup lang="ts">
  import { onBeforeUnmount, ref } from 'vue';
	import { bus } from "@/utils/mitt.js";
	import { changeIdentityToUser, deleteUser } from '@/api/userinfor.js';
	import { ElMessage } from 'element-plus';
	import { tracking } from '@/utils/operation.js';

	// 管理员操作，降级
  const adminId = ref()  // 降级 
	bus.on('deleteId', (id : number) => {
		adminId.value = id
	})

	// 员工操作， 删除  【id删除用户 account删除用户头像】 
	// openUser双击打开弹窗"userId" -> bus.on('userId', (row : any) => { userData.id = row.id...}
	// let userInfo = { id:id, account:userData.account, name:userData.name } -> bus.emit('deleteUserId', userInfo)
	const userid = ref() 
	const account = ref()
	const name = ref()  
	// 这是是员工管理的删除弹窗传递过来
	bus.on('deleteUserId', (userInfo : any) => {
		userid.value = userInfo.id
		account.value = userInfo.account
		name.value = userInfo.name
	})

  const deleteAdmin = async () => {
		// 1、如果是管理员操作，就降级
    if (adminId.value) {
			const res = await changeIdentityToUser(adminId.value)
			if (res.data.status == 0) {
				ElMessage({
					message: '对管理员降职成功',
					type: 'success',
				})
				bus.emit('adminDialogOff', 3)  
				dialogFormVisible.value = false
			} else {
				ElMessage.error('对管理员降职失败')
				dialogFormVisible.value = false
			}
		}
		// 2、如果是员工操作，就删除用户与头像
		if (userid.value) {
			const res = await deleteUser(userid.value, account.value)
			if (res.data.status == 0) {
				ElMessage({
					message: '删除用户成功',
					type: 'success',
				})

				// module, operation_person, operation_objcet, operation_level, operation_status
				tracking('用户', localStorage.getItem('name'), name.value, '高级')
		
				// 假设用户第二页 我们的用户为第一条数据 删除之后 页面变为第一页
				// 假设用户第二页 我们的用户不为第一条数据 删除之后 页面依然为第二页
				bus.emit('offDialog', 1)  // if(1)关闭上级弹窗
				dialogFormVisible.value = false
			} else {
				ElMessage.error('删除用户失败')
				dialogFormVisible.value = false
			}
		}
  }
  // ----------------------------------------------------------------------------------------
  // 弹窗开关
	const dialogFormVisible = ref(false)
  // 打开创建管理员的弹窗
  const open = () => {
    dialogFormVisible.value = true
  }
  defineExpose({
    open
  })
  onBeforeUnmount(()=>{ 
    bus.all.clear()
  })
</script>
 
<style lang="scss" scoped>
  .el-dialog--center .el-dialog__body {
    text-align: center;
	}
</style>
